import { IPersonalConfig } from '@/api/personalConfig/interface'
/*
type ReducerMaker<T extends Record<string, any>> = {
	[t in keyof T]: {
		type: t
		payLoad: T[t]
	}
}[keyof T]
*/
/*
ReducerMaker是一个高级的TypeScript类型，用于生成一个类型安全的action对象。
它接收一个泛型参数T，这个参数是一个对象，对象的键是action的类型名称，值是与该类型相关的payload类型。
*/
export type IAction = ReducerMaker<{
	init: IPersonalConfig
	setHomeType: 1 | 2 | 3 | 4
	setMtPortraitType: 1 | 2
	setMtOrderType: 1 | 2 | 3
	setMonitorType: 1 | 2
	setRollCallType: 1 | 2
	setCameraOperation: 0 | 1
	setChairman: 0 | 1
	setDcs: 0 | 1
	setDoubleFlow: 0 | 1
	setMix: 0 | 1
	setForceBrd: 0 | 1
	setMtDeleteOffline: 0 | 1
	setMtDeleteOnline: 0 | 1
	setMtInfoOffline: 0 | 1
	setMtInfoOnline: 0 | 1
	setMtOffline: 0 | 1
	setMtOnline: 0 | 1
	setMtVideo: 0 | 1
	setMute: 0 | 1
	setOftenMt: 0 | 1
	setSelect: 0 | 1
	setSilence: 0 | 1
	setSpeaker: 0 | 1
	setUpload: 0 | 1
	setVmp: 0 | 1
	setMtAdd: 0 | 1
	setMtAddAll: 0 | 1
	setVip: 0 | 1
	setMccMute: 0 | 1
	setMccSilence: 0 | 1
	setMtSelect: 0 | 1
	setMccVmp: 0 | 1
	setMccMix: 0 | 1
	setTVWall: 0 | 1
	setMeetingPoll: 0 | 1
	setChairmanPoll: 0 | 1
	setRollCall: 0 | 1
	setMtBatchDelete: 0 | 1
	setVideoLive: 0 | 1
	setMeetingVideo: 0 | 1
	setMtBatchOffline: 0 | 1
	setMsg: 0 | 1
	setBroadcast: 0 | 1
	setSpeakerQueue: 0 | 1
	setVoiceInspire: 0 | 1
	setMccUpload: 0 | 1
	setDataMeeting: 0 | 1
	setMtRecord: 0 | 1
	setMccRecall: 0 | 1
	setFileManage: 0 | 1
	setMonitor: 0 | 1
	setAI: 0 | 1
	setMccMtVmp: 0 | 1
}>
